package cn.jietuo.juc.c_003_reentrant;

import java.util.concurrent.TimeUnit;

/**
 * @author zhangx & jietuo_zx@163.com
 * @version 1.0
 * @date 2020/5/4
 * @description:
 * 一个同步方法可以调用另外一个同步方法，一个线程已经拥有某个对象的锁，再次申请的时候仍然会得到该对象的锁.
 * 这里是继承中有可能发生的情形，子类调用父类的同步方法
 */
public class T02 {

    public synchronized void m(){
        System.out.println("T02 m start");
        try {
            TimeUnit.MICROSECONDS.sleep(1);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("T02 m end");
    }
    public static void main(String[] args) {
        new T02_child().m1();
    }
}

class T02_child extends T02{

    public synchronized void m1(){
        System.out.println("T02_child m start");
        try {
            TimeUnit.MICROSECONDS.sleep(1);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        super.m();
        System.out.println("T02_child m end");
    }
}
